// import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr*;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor*;
#pragma once
#include "SQLPartitionBy.h"
class SQLIntegerExpr;
class SQLASTVisitor;

class SQLPartitionByRange : virtual public SQLPartitionBy
{
public:
  SQLExpr_ptr interval;
  BOOL_ptr isColumns_;
  SQLExpr_ptr startWith;
  SQLIntegerExpr *expireAfter;
  SQLIntegerExpr *preAllocate;
  SQLExpr_ptr pivotDateExpr;
  BOOL_ptr disableSchedule;

  SQLPartitionByRange();
SHAREDOBJECT(SQLPartitionByRange);
  SQLExpr_ptr getInterval();

  void setInterval(SQLExpr_ptr interval);

  SQLExpr_ptr getStartWith();

  void setStartWith(SQLExpr_ptr startWith);

  SQLIntegerExpr *getExpireAfter();

  void setExpireAfter(SQLIntegerExpr *expireAfter);

  SQLIntegerExpr *getPreAllocate();

  void setPreAllocate(SQLIntegerExpr *preAllocate);

  SQLExpr_ptr getPivotDateExpr();

  void setPivotDateExpr(SQLExpr_ptr pivotDateExpr);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  // SQLPartitionByRange* clone() ;
  virtual SQLObject_ptr clone();
  void cloneTo(SQLPartitionByRange_ptr x);

  BOOL_ptr isColumns();

  void setColumns(BOOL_ptr columns);

  BOOL_ptr isDisableSchedule();

  void setDisableSchedule(BOOL_ptr disableSchedule);
};
